package modelo;

import java.util.Date;
/**
 * 
 * @author matheus_campos
 *
 *	Classe Pessoa cria uma classe abstract para poder ser usada em funcionarios e clientes
 */
public abstract class Pessoa {
	
	/**
	 * id para pessoa
	 */
	private int id;
	
	/**
	 * string para nome da pessoa
	 */	
	private String nome;
	
	/**
	 * string para sobrenome da pessoa
	 */
	private String sobrenome;

	/**
	 * string para armazenar senha min 8, max 32, 
	 */
	private String senha;
	
	/**
	 * string para CPF modelo: ###.###.###-##
	 */
	private String cpf;
	
	/**
	 * Boolean para sexo M=1 ou F=0
	 */
	private boolean sexo;
	
	/**
	 * date para data de nascimento modelo: ##/##/####
	 */
	private Date nascimento;
	
	/**
	 * string para email
	 */
	private String email;
	
	/**
	 * Localizacao com ruas, numero, etc
	 */
	private Localizacao localizacao = new Localizacao();

	/**
	 * String para telefone modelo: (##) ####-####
	 */
	private String telefone;
/**
 * construtor padrao vasil	
 */
	public Pessoa() {}
	/**
	 * Estes parametros valem para Funcionario e Cliente
         * proque eles extendem de Pessoa
         * 
	 * @param id identificador unico de Pessoa
	 * @param nome Nome da Pessoa
	 * @param sobrenome Sobrenome da Pessoa 
	 * @param senha Senha de acesso ao sistema
	 * @param cpf CPF da Pessoa
	 * @param sexo Sexo da Pessoa
	 * @param nascimento Data de nascimento da Pessoa
	 * @param email Email da Pessoa
	 * @param localizacao Endereao da Pessoa
	 * @param telefone Telefone de contato da Pessoa
	 */
	public Pessoa(int id, String nome, String sobrenome, String senha,
			String cpf, boolean sexo, Date nascimento, String email, Localizacao localizacao,String telefone) {
		this.id = id;
		this.nome = nome;
		this.sobrenome = sobrenome;
		this.senha = senha;
		this.cpf = cpf;
		this.sexo = sexo;
		this.nascimento = nascimento;
		this.email = email;
		this.localizacao = localizacao;
		this.telefone = telefone;
	}
	/**
	 * @return acessa localizaaaao 
	 */
	public Localizacao getLocalizacao() {
		return localizacao;
	}
	/**
	 * @param altera localizacao
	 */
	public void setLocalizacao(Localizacao localizacao) {
		this.localizacao = localizacao;
	}
	/**
     * @return acessa id
     */
	public int getId() {
		return id;
	}
	/**
	 * @param altera id
	 */
	public void setId(int id) {
		this.id = id;
	}
	/**
	 * @return acessa telefone
	 */
	public String getTelefone() {
		return telefone;
	}
	/**
	 * @param altera telefone
	 */
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	/**
	 * @return acessa nome
	 */
	public String getNome() {
		return nome;
	}
	/**
	 * @param altera nome
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
	/**
	 * @return acessa sobrenome
	 */
	public String getSobrenome() {
		return sobrenome;
	}
	/**
	 * @param altera sobrenome
	 */
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	/**
	 * @return acessa senha
	 */
	public String getSenha() {
		return senha;
	}
	/**
	 * @param altera senha
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}
	/**
	 * @return acessa cpf
	 */
	public String getCpf() {
		return cpf;
	}
	/**
	 * @param altera cpf
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	/**
	 * @return acessa sexo
	 */
	public boolean isSexo() {
		return sexo;
	}
	/**
	 * @param altera sexo
	 */
	public void setSexo(boolean sexo) {
		this.sexo = sexo;
	}
	/**
	 * @return acessa nascimento
	 */
	public Date getNascimento() {
		return nascimento;
	}
	/**
	 * @param altera nascimento
	 */
	public void setNascimento(Date nascimento) {
		this.nascimento = nascimento;
	}
	/**
	 * @return acessa email
	 */
	public String getEmail() {
		return email;
	}
	/**
	 * @param altera email
	 */
	public void setEmail(String email) {
		this.email = email;
	}
        /**
         * 
         * @return imprime o cbb Pessoa id, nome, sobrenome, senha, cpf,
         * sexo, nascimento, email, localizaaao, telefone.
         */
	@Override
	public String toString() {
		return "Pessoa [id=" + id + ", nome=" + nome + ", sobrenome="
				+ sobrenome + ", senha=" + senha + ", cpf=" + cpf + ", sexo="
				+ sexo + ", nascimento=" + nascimento + ", email=" + email
				+ ", localizacao=" + localizacao + ", telefone=" + telefone
				+ "]";
	}
	
	
}
